﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Libreria.SIG.Modelo;

namespace Libreria.SIG.Negocio
{
    public class PedidoNegocio
    {
        public List<Pedido> consultarPedidos(Int32 codigoVenta, String cadenaDeConexion)
        {
            List<Pedido> Pedidos = new List<Pedido>();
            Pedido listaDePedidos = new Pedido(cadenaDeConexion);
            if (codigoVenta > 0)
            {
                Pedidos.Add(listaDePedidos.consultarPorCodigoVenta(codigoVenta));
            }
            else
            {
                Pedidos = listaDePedidos.consultar();
            }
            return Pedidos;
        }

        public List<Pedido> consultarPedidosPorMenu(Int32 codigoMenu, String cadenaDeConexion)
        {
            List<Pedido> Pedidos = new List<Pedido>();
            Pedido listaDePedidos = new Pedido(cadenaDeConexion);
            if (codigoMenu > 0)
            {
                listaDePedidos.CodigoMenu = codigoMenu;
                listaDePedidos.CodigoReceta = null;
                listaDePedidos.CodigoVenta = null;

                Pedidos = listaDePedidos.consultar();
            }
            return Pedidos;
        }

        public Dictionary<String, Int32> almuerzosDelDia(String Dia, String cadenaDeConexion)
        {
            Dictionary<String, Int32> almuerzosARetornar = new Dictionary<String, Int32>();
            if (Dia != "-")
            {
                Venta ventas = new Venta(cadenaDeConexion);
                DateTime fecha;
                DateTime.TryParse(Dia, out fecha);
                ventas.FechaVenta = DateTime.MinValue;
                ventas.EsReserva = null;
                ventas.FechaCompra = fecha;
                ventas.IdentificadorUsuario = null;
                ventas.ValorCompra = null;
                ventas.Codigo = null;

                List<Venta> almuerzos = ventas.consultar();
                almuerzosARetornar.Add("Total", almuerzos.Count);
                almuerzosARetornar.Add("Reservados", 0);
                almuerzosARetornar.Add("NoReservados", 0);
                foreach (Venta almuerzo in almuerzos)
                {
                    if (almuerzo.EsReserva.Value)
                    {
                        if (almuerzosARetornar.ContainsKey("Reservados"))
                        {
                            almuerzosARetornar["Reservados"] += 1;
                        }
                        else
                        {
                            almuerzosARetornar.Add("Reservados", 1);
                        }
                    }
                    else
                    {
                        if (almuerzosARetornar.ContainsKey("NoReservados"))
                        {
                            almuerzosARetornar["NoReservados"] += 1;
                        }
                        else
                        {
                            almuerzosARetornar.Add("NoReservados", 1);
                        }
                    }
                }
            }
            return almuerzosARetornar;

        }
        public Dictionary<Int32, Int32> ingredientesDelDia(String Dia, String cadenaDeConexion)
        {
            Dictionary<Int32, Int32> ingredientesARetornar = new Dictionary<Int32, Int32>();
            return ingredientesARetornar;

            /* no borrar debido a que es una especificación del usuario, pero se tendran en cuenta en la versión 2.0
            if (Dia != "-")
            {
                Venta ventas = new Venta(cadenaDeConexion);
                DateTime fecha;
                DateTime.TryParse(Dia, out fecha);
                ventas.FechaVenta = DateTime.MinValue;
                ventas.EsReserva = null;
                ventas.FechaCompra = fecha;
                ventas.IdentificadorUsuario = null;
                ventas.ValorCompra = null;
                ventas.Codigo = null;

                List<Venta> codigosDeVenta = ventas.consultar();
                Pedido pedido = new Pedido(cadenaDeConexion);
                foreach (Venta venta in codigosDeVenta)
                {
                    pedido = pedido.consultarPorCodigoVenta(venta.Codigo.Value);
                    List<IngredientesDeReceta> ingredientes = new IngredientesDeRecetaNegocio().consultarIngredientesDeReceta(pedido.CodigoReceta.Value, cadenaDeConexion);
                    foreach (IngredientesDeReceta ingrediente in ingredientes)
                    {
                        if (ingredientesARetornar.ContainsKey(ingrediente.Ingrediente.Value))
                        {
                            ingredientesARetornar[ingrediente.Ingrediente.Value] += ingrediente.Cantidad.Value;
                        }
                        else
                        {
                            ingredientesARetornar.Add(ingrediente.Ingrediente.Value, ingrediente.Cantidad.Value);
                        }
                    }
                }
            }
            return ingredientesARetornar;
            */
        }

        public void eliminarPedido(Int32 CodigoVenta, Int32 CodigoMenu, Int32 CodigoReceta, String cadenaDeConexion)
        {
            Pedido PedidoAEliminar = new Pedido(cadenaDeConexion);
            PedidoAEliminar.CodigoVenta = CodigoVenta;
            PedidoAEliminar.CodigoMenu = CodigoMenu;
            PedidoAEliminar.CodigoReceta = CodigoReceta;
            PedidoAEliminar.eliminar();
        }

        public void crearPedido(Int32 CodigoVenta, Int32 CodigoMenu, Int32 CodigoReceta, String cadenaDeConexion)
        {
            Pedido PedidoACrear = new Pedido(cadenaDeConexion);
            PedidoACrear.CodigoVenta = CodigoVenta;
            PedidoACrear.CodigoMenu = CodigoMenu;
            PedidoACrear.CodigoReceta = CodigoReceta;
            PedidoACrear.crear();
        }

    }
}
